Operator Library: Hardware Platform
이 오퍼레이터는 25 Gbit/s per fiber lane 속도로 작동하는 CoF(CXP over Fiber) 카메라와 VisualApplets 간의 이미지 데이터 인터페이스를 나타냅니다. 이 오퍼레이터는 쿼드 채널 CoF 구성(즉, 100 Gbit/s)에서 사용할 수 있습니다. 인터페이스 토폴로지는 FiberConnection 파라미터로 선택하며, 이를 통해 오퍼레이터를 QSFP28 포트 [0] 또는 QSFP28 포트 [1]에 연결할 수 있습니다. 이 오퍼레이터는 카메라가 전달하는 포맷에 관계없이 원본(raw) 이미지 데이터를 출력합니다. 그런 다음 카메라에서 전송된 포맷으로 이 이미지 데이터를 변환해야 합니다. 이미지 데이터를 변환하려면 원본 바이트 값을 픽셀 값으로 집계하고 캐스팅하는 적절한 오퍼레이터를 사용하십시오. 작동 중 특정 상황은 아래 설명된 대로 이벤트 시스템을 통해 전달될 수 있습니다. 또한 이 오퍼레이터에는 카메라와의 연결 상태를 나타내는 다양한 파라미터가 있습니다.
| 하드웨어 플랫폼 지원 여부 |
|---|
| imaFlex 2 Dual 100 |
VisualApplets에서의 인스턴스화
오퍼레이터는 출력 O로 이미지 데이터를 제공합니다. 이 출력은 항상 존재합니다. 이 표준 출력 포트 외에도 CXP 헤더 메타데이터를 위한 선택적 MetaDataO 출력을 구성할 수 있습니다. 오퍼레이터 인스턴스화 중에 다음 팝업 대화상자가 나타납니다.

여기서 선택적 메타데이터 포트를 지정할 수 있습니다. 포트 가용성을 "0"(기본값)으로 설정하면 오퍼레이터에 포트가 표시되지 않습니다. 포트 가용성을 1로 설정하면 오퍼레이터 인터페이스에서 메타데이터 포트를 사용할 수 있습니다.
선택적 MetaDataO 포트
MetaDataO는 10 x 24비트 컴포넌트로 구성된 10x1 커널 링크로 조직됩니다. 출력 포맷은 다음 그림에 나와 있습니다.

각 CXP 프레임은 해당 이미지 헤더를 제공합니다. 압축된 이미지 헤더는 10개의 서로 다른 값으로 구성됩니다. 값은 8~24비트 사이입니다. 오퍼레이터는 패딩 처리된 10x1 커널 값으로 이 10가지 값을 제공하며, 각 컴포넌트는 24비트로 패딩됩니다.
| 이미지 헤더 필드 | 커널 인덱스 | Bit Width [bit] | 설명 |
|---|---|---|---|
| StreamId | 0 | 8 | CXP 스트림의 ID |
| 태그 | 1 | 16 | 소스 이미지 인덱스입니다. 이 인덱스는 전송된 이미지마다 1씩 증가하며, 0xFFFF에서 0으로 순환(wrap around)합니다. 동일한 이미지와 관련된 데이터를 포함하는 각 스트림에는 동일한 번호를 사용해야 합니다(멀티 탭 스트림의 경우). |
| XSize | 2 | 24 | 이 값은 픽셀 단위의 이미지 너비를 나타냅니다. |
| XOff | 3 | 24 | 이 값은 전체 디바이스 이미지의 가장 왼쪽 픽셀을 기준으로 한 이미지의 픽셀 단위 수평 오프셋을 나타냅니다. |
| YSize | 4 | 24 | 이 값은 픽셀 단위의 이미지 높이를 나타냅니다. 라인 스캔 이미지의 경우 이 값은 0으로 설정됩니다. |
| YOff | 5 | 24 | 이 값은 전체 디바이스 이미지의 맨 위 라인을 기준으로 한 이미지의 픽셀 단위 수직 오프셋을 나타냅니다. 라인 스캔 이미지의 경우 이 값은 0으로 설정됩니다. |
| DSizeL | 6 | 24 | 이 값은 이미지 라인당 32비트 데이터 워드 수를 나타냅니다. |
| PixelF | 7 | 16 | 이 값은 Pixel Format을 나타냅니다. |
| TapG | 8 | 16 | 이 값은 탭 지오메트리를 나타냅니다. |
| Flags | 9 | 8 | 이미지 플래그입니다. |
Device Resource Usage
이 연산자는 매개변수 FiberConnection의 선택에 따라 Port[0] CoF Lane의 리소스 4개 또는 Port[1] CoF Lane의 리소스 4개를 사용합니다. 이 리소스는 포트 [0] 또는 포트 [1]에 있는 QSFP28 커넥터 내의 물리적 파이버 레인을 나타냅니다. 할당된 레인은 CoF 프로토콜 전용으로 사용됩니다. 서로 다른 연산자(데이터 포워딩)를 사용하는 다른 프로토콜도 QSFP28 커넥터를 사용할 수 있습니다. 그러나 프로토콜 선택은 전체 QSFP28 포트, 즉 내부의 4개 레인 전체에 적용됩니다. AppletProperties 연산자의 FiberProtocol0 및 FiberProtocol1 매개변수에서 프로토콜을 정의합니다. 이벤트 시스템의 경우 EventPort 타입의 구성 가능한 리소스가 사용됩니다. 또한, 런타임 소프트웨어에서 이벤트 채널 식별 및 등록에 사용하는 읽기 전용 리소스 EventID가 할당됩니다.

Port[n]은 QSFP28[n] 커넥터를 의미합니다. 리소스 인덱스는 선택된 커넥터 내의 파이버 레인입니다.
![]() |
Resources Are Read-Only |
|---|---|
|
EventPort를 제외한 모든 리소스는 읽기 전용입니다. 이들의 값은 포트(커넥터) 및 레인(커넥터 내의 파이버 연결)에 매핑된 FiberConnection 매개변수 값을 반영합니다. |
![]() |
이미지 너비 및 이미지 높이 수정 |
|---|---|
|
출력 링크의 최대 이미지 너비 및 높이 속성을 통해 너비와 높이를 카메라 고유 설정에 맞게 조정할 수 있습니다. 단, 연산자 포트 O의 최대 이미지 너비는 포트 O의 Parallelism으로 나누어 떨어져야 합니다. 따라서 최대 이미지 너비가 포트 O의 Parallelism으로 나누어 떨어지도록 하십시오! |
Error Handling and Event System
연산자가 수신된 재구성된 프레임이 CXP 이미지 헤더에서 카메라가 알린 크기보다 크거나 작다는 것을 감지하면, 해당 오류 Counter 매개변수 중 하나가 증가합니다.
-
수신된 프레임의 크기가 이미지 헤더에 지정된 것보다 작은 경우, FrameCorruptedCount가 증가합니다.
-
수신된 프레임의 크기가 이미지 헤더에 지정된 것보다 큰 경우, FrameOversizedCount가 증가합니다.
For a set of very critical errors, the operator will forward asynchronous events to the host runtime software (Framegrabber SDK). Events can be caused by corrupted frames or CRC errors. The event name in the Framegrabber API is <hierarchical operator name>\CxpStreamStatus, e.g. Device1\Process0\Camera\CxpStreamStatus. The event payload is provided as four 16-bit data words. The event format is defined as follows:

-
word [0]:
-
Bits [0:15]: 이벤트가 발생한 CXP 이미지 태그입니다.
-
-
word [1]:
-
Bits [0:7]: 예약되어 있으며 정의된 기능이 없습니다. 이 값은 무시해도 됩니다.
-
Bits [8:15]: 이벤트가 발생한 스트림 ID입니다.
-
-
word [2]:
-
Bit [0]: CRC 오류가 발생했습니다.
-
Bits [1:15]: 예약되어 있으며 정의된 기능이 없습니다. 이 값은 무시해도 됩니다.
-
-
word [3]:
-
Bit [0]: 예약되어 있으며 정의된 기능이 없습니다. 이 값은 무시해도 됩니다.
-
Bit [1]: 이벤트 손실이 발생했습니다. 이는 이전 이벤트가 손실되었음을 의미합니다. 런타임 소프트웨어가 이벤트에 반응하지 않고 내부 이벤트 큐가 오버플로될 때 발생합니다.
-
Bit [2:15]: 예약되어 있으며 정의된 기능이 없습니다. 해당 값은 무시할 수 있습니다.
-
각 오류 이벤트는 런타임 소프트웨어에서 인터럽트를 트리거합니다. 인터럽트 수를 줄이기 위해 동일한 프레임 태그를 가진 여러 이벤트가 병합될 수 있습니다. 이벤트가 병합되면 해당 오류 플래그가 결합됩니다.
이벤트가 손실된 경우, 직전 이벤트에는 누락된 이벤트에 대한 정보가 포함됩니다. 이 직전 이벤트는 동일한 프레임 태그를 공유하는 다른 어떠한 이벤트와도 병합될 수 없습니다.
CRC 오류로 인해 발생한 이벤트에는 프레임 태그가 포함되지만, 이 태그가 CRC 오류가 발생한 정확한 프레임과 항상 일치하지는 않을 수 있습니다. 경우에 따라 태그가 이전 프레임이나 다음 프레임을 가리킬 수 있습니다.
이러한 상황은 카메라가 두 개 이상의 프레임 간 전환 영역에 걸쳐 있는 CXP 패킷을 전송할 때 발생할 수 있습니다. CRC 계산은 패킷 끝에서 완료되는 반면, 스트림 데이터는 온더플라이(on-the-fly) 방식으로 재구성됩니다. 결과적으로 이전 프레임이 이미 오퍼레이터에 의해 전송된 후 CRC 오류가 감지될 수 있습니다.
카메라 패킷에 한 프레임의 끝과 다음 프레임의 시작이 모두 포함되지 않는 일반적인 조건에서는 CRC 오류 발생 시 보고되는 프레임 태그가 항상 정확합니다.
다른 경우로, 전체 프레임 스트림 데이터가 최대 패킷 크기보다 작으면 단일 패킷 내에 하나의 프레임이 중첩될 수 있습니다. 이 경우 소프트웨어 응용 프로그램은 이전 프레임(프레임 태그 – 1)과 다음 프레임(프레임 태그 + 1)도 손상되었을 수 있는 것으로 처리해야 합니다.
| Link Parameter | Output Link O | Output Link MetaDataO |
|---|---|---|
| Bit Width | 8 | 24 |
| Arithmetic | unsigned | unsigned |
| Parallelism | 48 | 1 |
| Kernel Columns | 1 | 10 |
| Kernel Rows | 1 | 1 |
| Img Protocol | {VALT_IMAGE2D, VALT_LINE1D} (default: VALT_IMAGE2D) | {VALT_IMAGE2D, VALT_LINE1D, VALT_PIXEL0D} (default: VALT_IMAGE2D) |
| Color Format | VAF_GRAY | VAF_GRAY |
| Color Flavor | FL_NONE | FL_NONE |
| Max. Img Width | 임의(기본값: 1056) | 1 |
| Max. Img Height | 임의(기본값: 1056) | 1 |
| FiberConnection | |
|---|---|
| Type | Static Write 파라미터 |
| Default | port_0_lane_0_1_2_3 |
| Range | {port_0_lane_0_1_2_3, port_1_lane_0_1_2_3} |
|
FiberConnection 파라미터는 카메라가 연결된 QSFP28 포트와 카메라 오퍼레이터가 사용 중인 해당 포트의 레인을 정의합니다. 현재는 포트 0과 포트 1에서 4개의 레인을 사용하는 카메라 구성만 지원됩니다. 선택한 QSFP28 포트는 해당 포트의 AppletProperties 오퍼레이터에 있는 FiberProtocol 파라미터가 DataForwarding이 아닌 CoF로 설정된 경우에만 사용할 수 있습니다. FiberProtocol 파라미터가 DataForwarding으로 설정된 상태에서 CoFCamera 오퍼레이터가 해당 파이버 포트에 매핑을 시도하면 DRC(Design Rule Check)에서 오류 메시지가 생성됩니다. 이 경우 FiberConnection 파라미터는 충돌 상태(빨간색)로 표시되며, 마우스 커서를 올리면 충돌을 설명하는 퀵 팁 도움말 메시지가 표시됩니다. 동일한 레인에서 동일한 CoFCamera 오퍼레이터 하나만 하드웨어 QSFP28 포트를 사용할 수 있습니다. 여러 오퍼레이터 간의 매핑은 전체 설계에 걸쳐 고유해야 합니다. |
|
| MaxPacketSize | |
|---|---|
| Type | Static Write 파라미터 |
| Default | _16384 |
| Range | {_16384, _8192} |
|
MaxPacketSize 파라미터는 CXP 표준에 지정된 대로 연결된 카메라의 최대 스트림 패킷 크기를 바이트 단위로 정의합니다. 카메라는 이 제한과 같거나 작은 스트림 패킷을 전송합니다. 이 파라미터는 블록 RAM FPGA 리소스 사용량에 영향을 줍니다. 값이 작을수록 사용되는 블록 RAM 리소스가 줄어듭니다. 예 (4개 레인): _16384 값은 64개의 블록 RAM 리소스를 사용하고, _8192 값은 32개의 블록 RAM 리소스를 사용합니다. |
|
| InjectError | |
|---|---|
| Type | Dynamic Write 파라미터 |
| Default | PacketTagError |
| Range | {PacketTagError, ImageTagError, CorrectedError, PacketBufferOverflow, CrcError, FrameCorrupted, FrameOversized, UnexpectedStartupData} |
|
InjectError 파라미터는 테스트 목적으로 오류를 주입하는 데 사용됩니다. 주입된 오류는 해당하는 오류 카운트 파라미터를 증가시킵니다. 오류 유형에 따라 인젝션으로 인해 소프트웨어 인터럽트 이벤트가 발생할 수도 있습니다. 오류 시맨틱에 대한 자세한 내용은 관련 파라미터 설명을 참조하십시오. |
|
| UsedConnections | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | 4 |
| Range | [1 : 4] |
|
이 파라미터는 현재 사용되지 않습니다. 향후 기능을 위해 포함되어 있습니다. |
|
| PacketTagErrorCount | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | 0 |
| Range | [0 : 4095] |
|
매개변수 PacketTagErrorCount는 CXP 표준에 따라 예상된 태그와 일치하지 않는 태그를 가진 수신 패킷의 수를 집계합니다. 이 값은 후속 스트림 패킷 태그 열거에서 공백이 관찰되는 경우를 집계합니다. 이는 12비트 카운터입니다:
오버플로 비트가 설정되면 카운터 값은 무시되어야 하며, 즉 2047을 초과하는 오류 상황이 발생한 것으로 간주한다. |
|
| ImageTag 오류 개수 | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | 0 |
| Range | [0 : 4095] |
|
이 매개변수는 이미지 헤더 태그, CXP 표준에 따른 예상 태그, 그리고 수신된 태그 사이에 발생하는 불일치 횟수를 집계합니다. 이는 12비트 카운터입니다:
오버플로 비트가 설정된 경우, 카운터 값은 유효하지 않으므로 무시해야 하며, 이는 2047건 이상의 오류 상황이 발생했음을 의미합니다. |
|
| 수정된 오류 수 | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | 0 |
| Range | [0 : 4095] |
|
이 매개변수는 이미지 헤더나 라인 마커에서 탐지된 오류 중 성공적으로 수정된 오류의 수를 나타냅니다. 이는 12비트 카운터입니다:
오버플로 비트가 설정된 경우, 카운터 값은 유효하지 않으므로 무시해야 하며, 이는 2047건 이상의 오류 상황이 발생했음을 의미합니다. |
|
| 패킷 버퍼 오버플로 횟수 | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | 0 |
| Range | [0 : 4095] |
|
이 매개변수는 채널 본딩 패킷 버퍼에서 발생하는 오버플로 상황을 모니터링합니다. CXP 프로토콜의 특성상 오버플로는 두 개 이상의 파이버 레인을 사용하는 구성에서만 발생할 수 있습니다. 이 매개변수는 12비트 카운터입니다:
오버플로 비트가 설정된 경우, 카운터 값은 유효하지 않으므로 무시해야 하며, 이는 2047건 이상의 오류 상황이 발생했음을 의미합니다. |
|
| 패킷 버퍼 오버플로 원본 | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | 0 |
| Range | [0x0 : 0xF] |
|
이 매개변수는 비트 마스크를 구현하여 4개의 CXP 채널(즉, 파이버 레인) 중 어느 채널에서 패킷 버퍼 오버플로가 발생했는지 조회합니다. 순서:
|
|
| 카메라 스캔 모드 | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | 면적 |
| Range | {area, line} |
|
수신된 이미지 헤더는 스트림이 에어리어 스캔(area scan)용인지 라인 스캔(line scan)용인지 나타냅니다. 이 파라미터는 가장 최근에 수신된 스트림 이미지 헤더 정보를 보여줍니다. |
|
| UnexpectedStartupDataCount | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | 0 |
| Range | [0 : 4095] |
|
이 파라미터는 오퍼레이터 리셋 후 첫 번째 데이터 값이 이미지 헤더를 미리 수신하지 않아 예상치 못한 값일 때 발생하는 오류 상황을 감지합니다. 처리 시작 시의 예상치 못한 바이트 수를 보고합니다. 이는 12비트 Counter입니다:
오버플로 비트가 설정된 경우, 카운터 값은 유효하지 않으므로 무시해야 하며, 이는 2047건 이상의 오류 상황이 발생했음을 의미합니다. 예상치 못한 시작 데이터는 카메라 또는 프레임 그래버 펌웨어 구현의 오류나, 디스커버리 절차의 잘못된 소프트웨어 제어로 인해 발생할 수 있습니다. 또한 카메라, 광 모듈 또는 광 케이블의 하드웨어 결함으로 인해 이러한 상황이 발생할 수도 있습니다. |
|
| FrameCorruptedCount | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | 0 |
| Range | [0 : 4095] |
|
이 파라미터는 취득 중 손상된 프레임 수를 카운트합니다. 손상된 프레임에는 VisualApplets 파이프라인으로 전송된 오류 픽셀이 포함되어 있습니다. 이는 12비트 Counter입니다:
오버플로 비트가 설정된 경우, 카운터 값은 유효하지 않으므로 무시해야 하며, 이는 2047건 이상의 오류 상황이 발생했음을 의미합니다. |
|
| FrameOversizedCount | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | 0 |
| Range | [0 : 4095] |
|
이 파라미터는 취득 중에 감지된 규격 초과 프레임의 수를 카운트합니다. 규격 초과 프레임은 이미지 헤더에 지정된 것보다 더 많은 라인이나 픽셀을 포함하는 프레임을 의미합니다. 이러한 오류는 하드웨어 결함으로 인한 전송 문제나 카메라의 펌웨어 버그로 인해 발생할 수 있습니다. 이는 12비트 Counter입니다:
오버플로 비트가 설정된 경우, 카운터 값은 유효하지 않으므로 무시해야 하며, 이는 2047건 이상의 오류 상황이 발생했음을 의미합니다. |
|
| CrcErrorCount | |
|---|---|
| Type | 동적 읽기 파라미터 |
| Default | 0 |
| Range | [0 : 4095] |
|
이 파라미터는 CXP 스트림 패킷에서 발생한 CRC 오류 횟수를 카운트합니다. 이는 12비트 Counter입니다:
오버플로 비트가 설정된 경우, 카운터 값은 유효하지 않으므로 무시해야 하며, 이는 2047건 이상의 오류 상황이 발생했음을 의미합니다. |
|

![[참고]](../common/images/admon/note.png)
![[중요]](../common/images/admon/important.png)
이전

